Skip to main content

配置采集日志

Last updated on

产品基于 ilogtail 进行二次开发采集了应用产生的日志。相较于开源版本,Originx 仅保存故障发生时间段的日志,减少了存储。

K8s 环境采集配置

默认情况下仅采集输出到标准输出(stdout)的日志,如果您想要采集输出到文件中的日志,请按照以下步骤进行配置:

  1. 首先打开名为apo-ilogtail-user-config的 configmap:
kubectl edit cm apo-ilogtail-user-config -n apo
  1. 增加新的配置文件,将以下内容添加到 configmap 中:
data:
pod_stdout_file.yaml: |
...
# 以下为新增配置内容
pod_log_file.yaml: |
enable: true
inputs:
- Type: file_log
LogPath: /logs/
FilePattern: "*.log"
ContainerFile: true
processors:
- Type: processor_wait_for_signal
ContentsRename:
"__tag__:_container_id_": "_container_id_"
"__tag__:__path__": "_source_"
flushers:
- Type: flusher_otlp
Logs:
Endpoint: apo-otel-collector-svc:4317

修改inputs部分,配置您期望采集的日志文件,其中 LogPath 为容器日志所在的路径(支持搜索子路径),FilePattern 为匹配日志文件名的正则表达式。详细配置请参考 ilogtail的官方文档

注意:请不要修改 processorsflushers 部分。

  1. 保存并退出,无需重启,配置会动态生效。

虚拟机环境采集配置

在虚拟机环境中,ilogtail 当前仅支持直接采集宿主机上的日志。在安装探针的目录下,找到配置文件目录 apo-one-agent-compose/config/apo-ilogtail,创建 pod_log_file.yaml,配置如下:

enable: true
inputs:
- Type: file_log
# 日志文件在ilogtail进程所在容器下的路径
# 默认将宿主机目录挂载到容器内的/logtail_host下
# 因此在宿主机路径前添加 /logtail_host
LogPath: /logtail_host/home/
# 采集文本日志的文件名,支持通配符
# 支持多层目录匹配,即指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。
# 可以通过MaxDepth决定查询多少层
FilePattern: "*.log"
# 日志目录被监控的最大深度
# 例如,最大深度为2时, 即使都满足filePattern
# 将只采集 $LogPath/xx/xx/test.log
# 不采集 $LogPath/xx/xx/xx/test.log 的日志
MaxDepth: 4
processors:
- Type: processor_path_to_pid
- Type: processor_wait_for_signal
ContentsRename:
"__tag__:_container_id_": "_container_id_"
"__tag__:__path__": "_source_"
flushers:
- Type: flusher_otlp
Logs:
Endpoint: apo-otel-collector-svc:4317

主要需要修改:

  • LogPath: 指定需要采集日志的路径,注意在绝对路径前固定增加前缀 /logtail_host
  • FilePattern: 指定日志文件的匹配方式
  • MaxDepth: 指定从 LogPath 起,往下递归多少层目录查询满足 FilePattern 的日志文件
  • Endpoint: 指定接收地址,请使用服务端地址 NodeIP:30317,其中 NodeIP 为 APO 服务端所在集群主机IP。